package org.lanqiao.tjut.CHYInnerClass;

public class CHYOutClass {
	/*
	 * 成员内部类：
	 * 在一个类定义成员变量的位置定义了一个类，这个类就是这个外部类的成员内部类。
	 * 成员内部的声明周期、作用域范围和类的成员变量一样。
	 * 
	 * 在成员内部类中可以访问外部类的私有属性。
	 * 在成员内部类定义的外部类的方法中，可以直接使用成员内部类进行实例变量定义。
	 */
	
	// 成员变量--姓名
	private String stuName;

	
	// 在成员变量定义的位置，定义一个内部类，叫做成员内部类
	public class MyCHYInnerClass {
		// 内部类的成员变量
		private String stuInnerName;

		public void sayHello() {
			System.out.println("Innerclass say : hello...");
			System.out.println("成员内部类访问外部类的属性："+stuName);
		}

		/**
		 * 成员内部类的构造方法
		 * @param stuInnerName
		 */
		public MyCHYInnerClass(String stuInnerName) {
			super();
			this.stuInnerName = stuInnerName;
		}
		
	}
	/**
	 * 外部类的构造方法
	 * @param stuName
	 */
	public CHYOutClass(String stuName) {
		super();
		this.stuName = stuName;
	}

	public void doTest(){
		System.out.println("Here is outclass...");
		//在成员内部类定义的外部类的方法中，可以直接使用成员内部类进行实例变量定义。
		MyCHYInnerClass myChinner = new MyCHYInnerClass("内部类变量名");
		//调用成员内部类的方法
		myChinner.sayHello();
	}
}
